﻿#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QCloseEvent>
#include <QMdiArea>
#include <QDockWidget>
#include <QStatusBar>
#include <QLabel>
#include <QtreeWidget>
#include "MysqlClient.h"

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

	//重载一个父类函数 它是widget类退出之前自动调用的函数
	void closeEvent(QCloseEvent *);
private slots:
	void Slot_Login();//用于登录事件
	void Slot_Logout();
	void Slot_exit();
	void Slot_ShowSubWindow();  //
	void Slot_FoldWindow(); //层叠函数
	void Slot_ParaWindoe(); //并列函数
	void Slot_About();//关于
	void Slot_ExecSql();  //执行SQL语句
	void Slot_TreeViewProc(QTreeWidgetItem * item, int column);  //执行树形窗口响应事件
private:
	//处理SQL的select语句 
	void SqlSelectProc();
	void SetBackGround();
	//创建菜单项
	void CreatMenu() ;
	void CreateAction();
	void ShowSubWindow();
	void ShowItemView();
	//创建浮动窗口
	void CreateDockWindow();
	//创建树形控件
	void CreateTreeWindow();
	//创建状态栏
	void CreateStatusBar();
    QMenu *m_menu;
	QAction *m_actLogIn;//登录
	QAction *m_actLogOut;//注销
	QAction *m_actExit;  //退出

	QMenu *m_menuData;
	QAction *m_actData;
	QAction *m_actSql;   //执行SQL语句

	QMenu *m_menuWindow;
	QAction *m_actFoldWindow;  //层叠窗口
	QAction *m_actParaWindow; // 并列窗口
	QMenu *m_menuHelp;
	QAction *m_actAbout;

	QDockWidget *m_dockWindow; //创建浮动窗口
	QTreeWidget *m_treeWideget; //创建树形控件
	QStatusBar *m_statusBar;    //状态栏
	QLabel  *m_statusLab; //用于显示状态栏的信息
	//创建一个中间控件 这个控件只能在QmainWindow用 用来实现多文档的必备控件
	QMdiArea *m_centerArea;

	//创建一个MYSQL客户端
	CMysqlClient m_mysqlClient;
	//用户是否已经登录成功
	bool m_isLogin;
};

#endif // MAINWINDOW_H
